#pragma once

#include <AVUIAnimatable.h>
#include <AVUILineUtil.h>

namespace AVUI {

class IClientRenderGeometry;
class Renderer;
class RayHitTestParameters;

class Geometry3D : public Animatable
{
public:
    Geometry3D() { };

    DECLARE_ELEMENT(Geometry3D, Animatable);

    virtual IClientRenderGeometry* GetRenderGeometry(Renderer* pRenderer) = 0;

    void RayHitTest(RayHitTestParameters* pRayParams, FaceType::Enum facesToHit);

    virtual void RayHitTestCore(RayHitTestParameters* pRayParams, FaceType::Enum hitTestableFaces) = 0;
    virtual Rect3D get_Bounds() = 0;

};


}; // namespace AVUI
